﻿using Aliyun.Oss;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Specialized;
using System.Collections.Generic;

namespace Aliyun.Oss.Tests
{
    
    
    /// <summary>
    ///这是 OpenStorageTest 的测试类，旨在
    ///包含所有 OpenStorageTest 单元测试
    ///</summary>
	[TestClass()]
	public class OpenStorageTest
	{


		private TestContext testContextInstance;

		/// <summary>
		///获取或设置测试上下文，上下文提供
		///有关当前测试运行及其功能的信息。
		///</summary>
		public TestContext TestContext
		{
			get
			{
				return testContextInstance;
			}
			set
			{
				testContextInstance = value;
			}
		}

		#region 附加测试特性
		// 
		//编写测试时，还可使用以下特性:
		//
		//使用 ClassInitialize 在运行类中的第一个测试前先运行代码
		//[ClassInitialize()]
		//public static void MyClassInitialize(TestContext testContext)
		//{
		//}
		//
		//使用 ClassCleanup 在运行完类中的所有测试后再运行代码
		//[ClassCleanup()]
		//public static void MyClassCleanup()
		//{
		//}
		//
		//使用 TestInitialize 在运行每个测试前先运行代码
		//[TestInitialize()]
		//public void MyTestInitialize()
		//{
		//}
		//
		//使用 TestCleanup 在运行完每个测试后运行代码
		//[TestCleanup()]
		//public void MyTestCleanup()
		//{
		//}
		//
		#endregion


		/// <summary>
		///Signature 的测试
		///</summary>
		[TestMethod()]
		public void SignatureTest()
		{
			OpenStorage target = new OpenStorage();
			string accessKey = "OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV";
			string httpMethod = "PUT";

			NameValueCollection headers = new NameValueCollection();
			headers.Add("Content-Md5", "c8fdb181845a4ca6b8fec737b3581d76");
			headers.Add("Content-Type", "text/html");
			headers.Add("Date", "Thu, 17 Nov 2005 18:49:58 GMT");

			headers.Add("X-OSS-Meta-Author", "foo@bar.com");
			headers.Add("X-OSS-Magic", "abracadabra");

			string resource = "/quotes/nelson";
			string expected = "63mwfl+zYIOG6k95yxbgMruQ6QI=";
			string actual;
			actual = target.Signature(accessKey, httpMethod, headers, resource);

			Assert.AreEqual(expected, actual);
			//Assert.Inconclusive("验证此测试方法的正确性。");
		}
	}
}
